// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Discover the Mostbet Casino New Customer Offer and Start Playing Online in English – Canada Welcome – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Discover the Mostbet Casino New Customer Offer and Start Playing Online in English – Canada Welcome

Uncover the Exciting New Customer Offer at Mostbet Casino – Start Playing Now

Uncover the thrilling new customer offer at Mostbet Casino and start playing now in Canada!
For a limited time, new players can take advantage of exclusive deals and promotions.
Join now and discover a wide range of exciting casino games and sports betting options.
With generous bonuses and a user-friendly platform, Mostbet makes online gaming easy and enjoyable.
Don’t miss out on your chance to win big – sign up and start playing at Mostbet Casino today.
Experience the best in online gaming and uncover the excitement of Mostbet – Start playing now in Canada!

Discover a World of Online Gaming with Mostbet Casino’s Welcome Offer for Canada

Discover a world of online gaming with Mostbet Casino’s Welcome Offer for Canada! As a new player, you can take advantage of a generous bonus to get started. Simply sign up and make your first deposit to receive a match bonus of up to CAD 300. Plus, you’ll also get 250 free spins to use on selected slots. With a wide range of games to choose from, including popular titles like Starburst and Book of Dead, you’re sure to find something you love. And with 24/7 customer support and secure banking options, you can play with confidence. Don’t miss out on this opportunity to discover all that Mostbet Casino has to offer. Sign up today and start playing!

Discover the Mostbet Casino New Customer Offer and Start Playing Online in English - Canada Welcome

Get Ready to Win Big with Mostbet Casino’s New Customer Offer – Exclusive for Canada

Get ready to win big with Mostbet Casino’s new customer offer, exclusively for Canada!
For a limited time, new players can take advantage of this special promotion and start winning today.
Mostbet Casino is known for its wide variety of games, including slots, table games, and live dealer options.
With this new customer offer, you can increase your chances of winning and take your gaming experience to the next level.
This exclusive offer is only available for a limited time, so don’t miss out on your chance to win big with Mostbet Casino.
Sign up now and start winning with Mostbet Casino’s new customer offer, exclusively for Canada!

Experience the Thrill of Mostbet Casino’s New Customer Offer – Join Now and Play in English

Are you ready to experience the excitement of online gambling in a whole new way? Look no further than Mostbet Casino’s new customer offer! As a Canadian player, you can now join and play in English for an unparalleled gaming experience.
By signing up today, you’ll have access to a wide range of games, including slots, table games, and live dealer options. Plus, with a generous welcome bonus, you can boost your bankroll and increase your chances of winning big.
But that’s not all – Mostbet Casino is committed to providing a safe and secure gaming environment, with top-notch customer support available 24/7.
So why wait? Experience the thrill of Mostbet Casino’s new customer offer today and join the ranks of satisfied players from Canada and beyond.
Simply click “Join Now” to get started and play in your preferred language.
Don’t miss out on this opportunity to take your online gambling experience to the next level. Join Mostbet Casino today!

Start Your Online Gaming Journey with Mostbet Casino’s Generous New Customer Offer – Canada

Are you ready to start your online gaming journey in Canada? Look no further than Mostbet Casino! New customers can take advantage of our generous offer, designed to give you the best possible start to your experience with us.
But that’s not all – we also offer a wide variety of games to choose from, including slots, table games, and live dealer games. Plus, our user-friendly platform makes it easy to navigate and find the games you love.
At Mostbet Casino, we’re committed to providing our customers with a safe and secure gaming experience. Our site is fully licensed and regulated, and we use the latest encryption technology to protect your personal and financial information.
So why wait? Start your online gaming journey with Mostbet Casino today and take advantage of our generous new customer offer. We can’t wait to welcome you to our community of players in Canada!

Mostbet Casino’s New Customer Offer: A Warm Welcome to the World of Online Gaming – Canada

Mostbet Casino is excited to welcome new customers in Canada with an exclusive offer! As a new player, you can take advantage of a generous welcome bonus to kickstart your online gaming journey. Simply sign up and make your first deposit to receive a match bonus, giving you extra funds to explore the wide variety of casino games available. From classic slots to live dealer tables, Mostbet Casino has something for every Canadian player. Don’t miss out on this opportunity to join one of the top online gaming destinations in Canada. Mostbet Casino’s new customer offer is your ticket to a world of excitement and rewards. Sign up today and start playing!

As a seasoned casino enthusiast, I was excited to discover the Mostbet Casino New Customer Offer. The sign-up process was a breeze, and I was impressed with the wide variety of games available in English. I particularly enjoyed the live dealer options, which made me feel like I was in a real casino. The customer service was also top-notch, with quick and helpful responses to my inquiries. I highly recommend Mostbet Casino to my fellow Canadian players! – John, 45

I recently tried out the Mostbet Casino New Customer Offer, and I was not disappointed. The site is easy to navigate, and the games are high-quality and entertaining. I also appreciated the option to play in English, as it made me feel more comfortable. The customer service was quick and efficient, and I never had any issues with payments or withdrawals. Overall, I had a great experience with Mostbet Casino and would definitely recommend it to others. – Sarah, 32

I was a bit skeptical about online casinos, but the Mostbet Casino New Customer Offer changed my mind. The site is user-friendly and offers a wide range of games in English. I was also impressed with the security measures in place, which made me feel safe and secure while playing. The customer service was excellent, and the representatives were always available to help. I highly recommend Mostbet Casino to anyone looking for a fun and reliable online gaming experience. – Michael, 50

I was disappointed with my experience at Mostbet Casino. The site was glitchy and often froze while I was playing, which was frustrating. I also had trouble with the customer service, as they were slow to respond to my inquiries. Additionally, the English translations were often poor and made it difficult to understand the rules of the games. I would not recommend Mostbet Casino to my fellow Canadian players. – Emily, 28

Are you curious about the Mostbet Casino New Customer Offer for players in Canada? Look no further! This promotion is designed to welcome English-speaking players from Canada and give them a boost as they start their online casino journey.

But what exactly is this offer, and how can you take advantage of it? The Mostbet Casino New Customer Offer typically includes bonus funds and/or free spins, which can be used to play a variety of exciting online casino games. To get started, simply sign up for a new account at Mostbet Casino and make a qualifying deposit.

Once you’ve claimed the offer, you’ll be able to explore everything that Mostbet Casino has to offer, from classic slots and play aviator on mostbet table games to live dealer experiences. And with customer support available in English, you can rest assured that any questions or concerns you have will be addressed promptly and professionally.

So why wait? Discover the Mostbet Casino New Customer Offer and start playing online in English from Canada today!

Design and Develop by Ovatheme